package com.zlmediakit.jni;

import android.util.Log;

/**
 * @author Administrator
 */
public class ZLMediaKit {
    private static final String TAG = "ZLMediaKit";

    static public class MediaFrame {

        /**
         * 返回解码时间戳，单位毫秒
         */
        public int dts;

        /**
         * 返回显示时间戳，单位毫秒
         */
        public int pts;

        /**
         * 前缀长度，譬如264前缀为0x00 00 00 01,那么前缀长度就是4
         * aac前缀则为7个字节
         */
        public int prefixSize;

        /**
         * 返回是否为关键帧
         */
        public boolean keyFrame;

        /**
         * 音视频数据
         */
        public byte[] data;

        /**
         * 是音频还是视频
         * typedef enum {
         * TrackInvalid = -1,
         * TrackVideo = 0,
         * TrackAudio,
         * TrackTitle,
         * TrackMax = 0x7FFF
         * } TrackType;
         */
        public int trackType;


        /**
         * 编码类型
         * typedef enum {
         * CodecInvalid = -1,
         * CodecH264 = 0,
         * CodecH265,
         * CodecAAC,
         * CodecMax = 0x7FFF
         * } CodecId;
         */
        public int codecId;
    }

    static public interface MediaPlayerCallBack {
        void onPlayResult(int code, String msg);

        void onShutdown(int code, String msg);

        void onData(MediaFrame frame);
    }



    static public class MediaPlayer {
        private long _ptr;
        private MediaPlayerCallBack _callback;

        public MediaPlayer(String url, MediaPlayerCallBack callBack) {
            _callback = callBack;
            _ptr = createMediaPlayer(url, callBack);
        }

        public void release() {
            if (_ptr != 0) {
                releaseMediaPlayer(_ptr);
                _ptr = 0;
            }
        }

        @Override
        protected void finalize() throws Throwable {
            super.finalize();
            release();
        }
    }

    public static void CreateMediaServer(String path) {
        boolean isStart = startDemo(path);
        Log.d(TAG, "是否启动===" + isStart);
    }

    static public native boolean startDemo(String sd_path);
    static public native void releaseMediaPlayer(long ptr);
    static public native long createMediaPlayer(String url, MediaPlayerCallBack callback);

    static {
        System.loadLibrary("zlmediakit_jni");
    }


}
